//package com.yuntsg.subject_database.servic;
//
//
//import cn.hutool.core.util.NumberUtil;
//import cn.hutool.db.Db;
//import cn.hutool.db.Entity;
//import com.alibaba.fastjson.JSONObject;
//import com.yuntsg.subject_database.component.PutNameAndTypeMapComponent;
//import com.yuntsg.subject_database.entity.CorePaperUnite30W;
//import com.yuntsg.subject_database.entity.PublicEntity;
//import com.yuntsg.subject_database.util.OftenUtils;
//import com.yuntsg.subject_database.util.PublicUtils;
//import com.yuntsg.subject_database.util.SubDataUtils;
//import lombok.Data;
//import org.springframework.stereotype.Component;
//import org.zxp.esclientrhl.repository.ElasticsearchTemplate;
//
//import javax.annotation.Resource;
//import java.io.IOException;
//import java.sql.SQLException;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.concurrent.ConcurrentHashMap;
//
//@Component
//@Data
//public class UpDataCorePaperUnite30W {
//    @Resource
//    ElasticsearchTemplate<CorePaperUnite30W, String> upDataTable;
//    @Resource
//    private PutNameAndTypeMapComponent nameAndTypeMap;
//
//
////    Map<String, Set<SubDataUtils.StandardNameAndType>> nameAndTypeMap = new ConcurrentHashMap<>();
//
//    // 22; Public, Health->["22","Public, Health"]；856-859,892->["856","859","892"]；152-61; discussion 161-5, 198-199->["152","61","discussion 161","5","198","199"]；1,2->["1","2"]
//    public static List<String> strChangeList(String str) {
//        if (null == str || str.length() < 1) {
//            return new ArrayList<>();
//        }
//        str = reStrChangeList(str);
//        Set<String> set = new HashSet<>();
//        if (str.indexOf("-") > 0 && str.length() > str.indexOf("-") + 2) {
//            String front = str.substring(str.indexOf("-") - 1, str.indexOf("-"));
//            String after = str.substring(str.indexOf("-") + 1, str.indexOf("-") + 2);
//            if (!NumberUtil.isInteger(front) && !NumberUtil.isInteger(after)) {
//                str = str.replace("-", "ĺļ");
//            }
//        }
//        String[] strS = str.split("-");
//        for (String txt : strS) {
//            txt = reStrChangeList(txt);
//            String spl = "";
//            if (txt.contains(";")) {
//                spl = ";";
//            }
//            if (!txt.contains(";") && txt.contains(", ") && !txt.contains("Article")) {
//                spl = ", ";
//            }
//            if (txt.contains("-") && txt.contains(",") && !txt.contains("Article")) {
//                spl = ",";
//            }
//            if (spl.length() > 0) {
//                String[] split = txt.split(spl + " ");
//                if (split.length > 1) {
//                    for (String s : split) {
//                        s = reStrChangeList(s);
//                        if (s.length() > 0) {
//                            set.add(s.replace("ĺļ", "-"));
//                        }
//                    }
//                } else {
//                    split = txt.split(spl);
//                    if (split.length > 1) {
//                        for (String s : split) {
//                            s = reStrChangeList(s);
//                            if (s.length() > 0) {
//                                set.add(s.replace("ĺļ", "-"));
//                            }
//                        }
//                    }
//                }
//            } else {
//                set.add(txt.replace("ĺļ", "-"));
//            }
//        }
//        return new ArrayList<>(set);
//    }
//
//    public static String reStrChangeList(String str) {
//        str = str.replace("；", ";").replace("，", ",").replace("。", ".");
//        if (str.contains(";-;")) {
//            str = str.replace(";-;", ";").replace("-", " ");
//        }
//        if (str.contains("-") && str.contains(";") && str.contains(", ") && !str.contains("Article")) {
//            str = str.replace(", ", ";");
//        }
//        if (str.contains("-") && !str.contains(";") && str.contains(",") && !str.contains("Article")) {
//            str = str.replace(",", ";");
//        }
//        if (!str.contains("-") && !str.contains(";") && str.contains(",") && !str.contains("Article")) {
//            String[] split = str.split(",");
//            if (split.length == 2 && NumberUtil.isInteger(split[0]) && NumberUtil.isInteger(split[1])) {
//                str = str.replace(",", ";");
//            }
//        }
//        str = str.replaceAll(" +", " ").trim();
//        if (str.endsWith(";")) {
//            str = str.substring(0, str.length() - ";".length());
//        }
//        str = str.trim();
//        if (str.startsWith(";")) {
//            str = str.substring(";".length());
//        }
//        str = str.trim();
//        if (str.endsWith(",")) {
//            str = str.substring(0, str.length() - ",".length());
//        }
//        str = str.trim();
//        if (str.startsWith(",")) {
//            str = str.substring(",".length());
//        }
//        str = str.trim();
//        if (str.endsWith(".")) {
//            str = str.substring(0, str.length() - ".".length());
//        }
//        str = str.trim();
//        if (str.startsWith(".")) {
//            str = str.substring(".".length());
//        }
//        return str.trim();
//    }
//
//    // Liu, Matthew;-;Wong, Ipkin Anthony ;-; Chu, Rongwei;-;Shi, Guicheng James;-;Brock, James L.;-;Tseng, Ting-Hsiang
//    public static List<String> authChangeList(String str) {
//        if (null == str || str.length() < 2) {
//            return new ArrayList<>();
//        }
//        List<String> list = new ArrayList<>();
//        String[] split = str.replace(";-;", ";").replace("；", ";").replace("，", ",").replace("。", ".").split(";");
//        for (String s : split) {
//            if (s.trim().endsWith(".")) {
//                s = s.trim().substring(0, s.trim().length() - ".".length());
//            }
//            if (s.trim().endsWith(",")) {
//                s = s.trim().substring(0, s.trim().length() - ",".length());
//            }
//            if (s.trim().length() > 3) {
//                list.add(s.trim());
//            }
//        }
//        return list;
//    }
//
//    // Macrophages|cytology/*drug effects/physiology -> ["Macrophages / cytology","Macrophages / drug effects*","Macrophages / physiology"]  星号转到了后面，与ncbi相一致。
//    public static void meshChangeList(String mesh, List<String> meshList, List<String> mhList, List<String> shList) {
//        List<String> list = PublicUtils.strToListToLowerCase(mesh);
//        Set<String> meshSet = new HashSet<>();
//        Set<String> mhSet = new HashSet<>();
//        Set<String> shSet = new HashSet<>();
//        for (String l : list) {
//            if (l.contains("|")) {
//                String[] split = l.split("\\|");
//                for (String s : split) {
//                    String[] split1 = s.split("/");
//                    for (String str : split1) {
//                        if (split[0].length() > 0 && str.length() > 0 && !split[0].equals(str)) {
//                            if (str.startsWith("*")) {
//                                str = str.substring(1) + "*";
//                            }
//                            mhSet.add(split[0]);
//                            shSet.add(str);
//                            meshSet.add(split[0] + " / " + str);
//                        }
//                    }
//                }
//            } else {
//                mhSet.add(l);
//                meshSet.add(l);
//            }
//        }
//        meshList.addAll(meshSet);
//        mhList.addAll(mhSet);
//        shList.addAll(shSet);
//    }
//
//    public static String reMeshChangeList(String str) {
//        return str.replace("/", " / ").replaceAll(" +", " ").trim();
//    }
//
//    public void main() throws IOException, SQLException {
//
//        String dataTable = "scholar_23_05.result_core_paper_unite_test";
//        String jourTable = "scholar.help_jour_relational_table";
//        String meshTable = "scholar.help_mesh_tree_gcr_0615";
//
//        String limit = "";
////        String limit = " limit 50";
//        Integer onePageNum = 1000;
//
//
//        Map<String, Set<String>> meshAndTermsMap = new ConcurrentHashMap<>();
////        Map<Integer, JourNameList> jourNameMap = getJourNameMap(jourTable, nameAndTypeMap);
////        getMesh(meshTable, nameAndTypeMap, meshAndTermsMap);
//
//        String select = "cite_score`,`scie_if`,`sjr_score`,`citation_quota`,`reference_quota`,`article_id`,`data_id`,`jour_id`,`is_pdf`,`is_six_j`,`is_zhong_hua`,`is_beida`,`is_tongjiyuan`,`is_cscd`,`is_zky`,`is_pubmed`,`is_cite`,`is_wfmed`,`is_chkd`,`zky_dalei`,`altmetric`,`citation_num`,`reference_num`,`en_kw_map`,`en_auth_list`," +
//                "`w_mesh`,`cn_kw_list`,`unit_list`,`coll_list`,`dept_list`,`fund_list`,`country_list`,`cn_auth_list`,`en_ab`,`cn_ab`,`en_unit`,`en_au`,`citation_id_list`,`en_cn_au`,`info`,`data_unique`,`doi`,`mesh`,`en_ti`,`cn_ti`,`en_kw`,`cn_kw`,`cn_au`,`first_en_au`,`first_cn_au`,`first_corr`,`corr_auth`,`cn_unit`,`cnki_url`,`wanfan_url`," +
//                "`weipu_url`,`zhong_hua_url`,`title`,`jour`,`kan_ming`,`zky_subject`,`page`,`page_num`,`pub_year`,`pub_date`,`volume`,`issue`,`pub_type`,`article_type`,`language`,`subject`,`url`,`domain`,`sub_domain`,`zky_xiao_lei`,`beida_dalei`,`beida_xiao_lei`,`pubmed_subject`,`data_name";
//        readTable(dataTable, onePageNum, limit, "id", select, nameAndTypeMap.getJourNameMap(), false);
//
//
//// main
//    }
//
//    // 此部分的功能是ES表入库，分为两部分，一种是需要分词的，此部分拆分为小写的入库和原生的入库，小写的用于检索，原生的用于展示，另一种不作任何改变。
//    public void readTable(String dataTable, Integer onePageNum, String limit, String autoId, String field, Map<Integer, SubDataUtils.JourNameList> jourNameMap, boolean print) throws SQLException, IOException {
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        List<Integer> tempNum = Collections.synchronizedList(new ArrayList<>());
//        int from = 1;
//        int max = 0;
//        List<Entity> tableNum = Db.use().query("select count(1) as count from " + dataTable);
//        int count = tableNum.get(0).getInt("count");
//        if (count > 0) {
//            max = Db.use().queryNumber("select max(" + autoId + ") from " + dataTable).intValue();
//        }
//        int page = max / onePageNum;
//        if (max % onePageNum != 0) {
//            page++;
//        }
//        List<OftenUtils.PageInfo> pageInfos = new ArrayList<>();
//        for (int i = 1; i <= page; i++) {
//            int start = (i - 1) * onePageNum + from;
//            int stop = i * onePageNum + from - 1;
//            if (stop > max) {
//                stop = max + onePageNum;
//            }
//            pageInfos.add(new OftenUtils.PageInfo(start, stop));
//        }
//        int numAll = pageInfos.size();
//        pageInfos.parallelStream().forEach(pg -> {
//            try {
//                List<Entity> tableData = Db.use().query("select `" + autoId + "`,`" + field + "` from " + dataTable + " where " + autoId + " between " + pg.getFrom() + " and " + pg.getTo() + limit);
////                List<Entity> tableData = Db.use().query("select `" + autoId + "`,`" + field + "` from " + dataTable + " where " + autoId + " = 47 ");
//                tempNum.add(pg.getFrom());
//                if (print && tempNum.size() % 1000 == 0) {
//                    System.out.println(format.format(new Date()) + " 现在开始： " + pg.getFrom() + " -- " + pg.getTo() + " 总条数： " + numAll + " 目前已处理： " + tempNum.size() + " 表名： " + dataTable);
//                    OftenUtils.printMemory();
//                }
//                List<CorePaperUnite30W> list = Collections.synchronizedList(new ArrayList<CorePaperUnite30W>());
//                for (Entity entry : tableData) {
//                    CorePaperUnite30W corePaperUnite = new CorePaperUnite30W();
//
//                    corePaperUnite.setCitescore(OftenUtils.getDouField(entry, "cite_score")); // [展示]期刊cite影响因子值
//                    corePaperUnite.setScieif(OftenUtils.getDouField(entry, "scie_if")); // [展示]SCI期刊影响因子
//                    corePaperUnite.setSjrscore(OftenUtils.getDouField(entry, "sjr_score")); // [展示]期刊cite威望指数值
//                    corePaperUnite.setCitationquota(OftenUtils.getDouField(entry, "citation_quota")); // [展示]引文的指标（中科院分区累加分）
//                    corePaperUnite.setReferencequota(OftenUtils.getDouField(entry, "reference_quota")); // [展示]参文的指标（中科院分区累加分）
//                    corePaperUnite.setId(OftenUtils.getIntField(entry, "id")); // [展示]核心论文表的自增主键，表名：result_core_paper_unite，即本实体类的自增主键
//                    corePaperUnite.setArticleid(OftenUtils.getIntField(entry, "article_id")); // [展示]鲍论文关联中的自增id主键basic_core_paper
//                    corePaperUnite.setDataid(OftenUtils.getIntField(entry, "data_id")); // [展示]论文所在数据库中自增主键id
//
//                    corePaperUnite.setIspdf(OftenUtils.getIntField(entry, "is_pdf")); // [展示]是否有全文，是为1，否为0
//                    corePaperUnite.setIssixj(OftenUtils.getIntField(entry, "is_six_j")); // [展示]是否六大刊，是为1，否为0
//                    corePaperUnite.setIszhonghua(OftenUtils.getIntField(entry, "is_zhong_hua")); // [展示]是否中华医学期刊，是为1，否为0
//                    corePaperUnite.setIsbeida(OftenUtils.getIntField(entry, "is_beida")); // [展示]是否北大核心期刊收录，是为1，否为0
//                    corePaperUnite.setIstongjiyuan(OftenUtils.getIntField(entry, "is_tongjiyuan")); // [展示]是否统计源期刊收录，是为1，否为0
//                    corePaperUnite.setIscscd(OftenUtils.getIntField(entry, "is_cscd")); // [展示]是否CSCD期刊收录，是为1，否为0
//                    corePaperUnite.setIszky(OftenUtils.getIntField(entry, "is_zky")); // [展示]是否中科院期刊收录，是为1，否为0
//                    corePaperUnite.setIspubmed(OftenUtils.getIntField(entry, "is_pubmed")); // [展示]是否PubMed期刊收录，是为1，否为0
//                    corePaperUnite.setIscite(OftenUtils.getIntField(entry, "is_cite")); // [展示]是否威望指数SJR期刊收录，是为1，否为0
//                    corePaperUnite.setIswfmed(OftenUtils.getIntField(entry, "is_wfmed")); // [展示]是否万方医学，是为1，否为0
//                    corePaperUnite.setIschkd(OftenUtils.getIntField(entry, "is_chkd")); // [展示]是否CHKD，是为1，否为0
//                    corePaperUnite.setZkydalei(OftenUtils.getIntField(entry, "zky_dalei")); // [展示]中科院大类值，即1，2，3，4
//                    corePaperUnite.setPy(OftenUtils.strToInteger(OftenUtils.getStrField(entry, "pub_year"))); // [检索]论文的发表年
//                    corePaperUnite.setAltmetric(OftenUtils.getIntField(entry, "altmetric")); // [展示]文献的altmetric值
//                    corePaperUnite.setCitationnum(OftenUtils.getIntField(entry, "citation_num")); // [展示]引文的数量，即被引次数
//                    corePaperUnite.setReferencenum(OftenUtils.getIntField(entry, "reference_num")); // [展示]参文的数量
//
//                    Integer jid = OftenUtils.getIntField(entry, "jour_id");
//                    corePaperUnite.setJid(jid); // [检索]期刊关联表中的期刊唯一id号，即自增主键，表名help_jour_relational_table
//                    if (jourNameMap.containsKey(jid)) {
//                        SubDataUtils.JourNameList jourNameList = jourNameMap.get(jid);
//                        corePaperUnite.setCnta(jourNameList.getCnNameList());
//                        corePaperUnite.setEnta(jourNameList.getEnNameList());
//                        corePaperUnite.setSn(jourNameList.getIssnList());
//                    }
//
//                    List<String> meshList = new ArrayList<>();
//                    List<String> mhList = new ArrayList<>();
//                    List<String> shList = new ArrayList<>();
//                    meshChangeList(OftenUtils.getStrField(entry, "w_mesh").toLowerCase(), meshList, mhList, shList);// [检索]仅NCBI数据库中存在，加权的MeSH，分词，此为组合方式，同时包含主题词和副主题词
//                    corePaperUnite.setMesh(meshList);
//                    corePaperUnite.setMh(mhList);
//                    corePaperUnite.setSh(shList);
//
//                    Map<String, String> enKwMap = OftenUtils.strToMap(OftenUtils.getStrField(entry, "en_kw_map"));// 英文关键词集合，键为原生的，值为斯坦福后的，在此取斯坦福后的值。
//                    Set<String> enKwSet = new HashSet<>();
//                    Set<String> cnKwSet = new HashSet<>();
//                    for (Map.Entry<String, String> map : enKwMap.entrySet()) {
//                        OftenUtils.addNameSet(map.getKey(), cnKwSet, enKwSet);
//                        OftenUtils.addNameSet(map.getValue(), cnKwSet, enKwSet);
//                    }
//                    List<String> cn_kw_list = PublicUtils.strToListToLowerCase(OftenUtils.getStrField(entry, "cn_kw_list"));
//                    for (String key : cn_kw_list) {
//                        OftenUtils.addNameSet(key, cnKwSet, enKwSet);
//                    }
//                    corePaperUnite.setEnkw(new ArrayList<>(enKwSet)); // [检索]论文的英文关键词集合，包括从标题中提取的、原来的关键词、原来的关键词所对应的主题词。键是自由词，值是斯坦福后的
//                    corePaperUnite.setCnkw(new ArrayList<>(cnKwSet)); // [检索]论文的中文关键词集合，包括从标题中提取的、原来的关键词，分词
//                    corePaperUnite.setCnti(OftenUtils.getStrField(entry, "cn_ti")); // [检索]论文的中文标题，包含翻译的`cn_ti`及原始的`title`两部分，分词。
//                    String enTi = OftenUtils.getStrField(entry, "en_ti");
//                    corePaperUnite.setEnti(enTi.toLowerCase()); // [检索]论文的英文摘要，原为longblob类型，需要转换，分词。
//                    corePaperUnite.setEntishow(enTi); // [原始]论文的英文标题，用于展示，不作检索使用。此为原始的数据，区分大小写的
//
//                    String title = OftenUtils.getStrField(entry, "title");
//                    corePaperUnite.setTitle(title); // [展示]原始标题信息，优先取英文，无英文的再取中文，用于展示，不作检索使用
//
//                    List<String> first_corr = authChangeList(OftenUtils.getStrField(entry, "first_corr"));
//                    List<String> corr_auth = authChangeList(OftenUtils.getStrField(entry, "corr_auth"));
//                    Set<String> enCorrAuthSet = new HashSet<>();
//                    Set<String> cnCorrAuthSet = new HashSet<>();
//                    for (String auth : first_corr) {
//                        OftenUtils.addNameSet(auth, cnCorrAuthSet, enCorrAuthSet);
//                    }
//                    for (String auth : corr_auth) {
//                        OftenUtils.addNameSet(auth, cnCorrAuthSet, enCorrAuthSet);
//                    }
//                    corePaperUnite.setEnfau(authChangeList(OftenUtils.getStrField(entry, "first_en_au").toLowerCase())); // [检索]英文第一作者，分词
//                    corePaperUnite.setCnfau(authChangeList(OftenUtils.getStrField(entry, "first_cn_au"))); // [检索]中文第一作者，分词
//                    corePaperUnite.setEncau(new ArrayList<>(enCorrAuthSet)); // [检索]英文通讯作者，分词
//                    corePaperUnite.setCncau(new ArrayList<>(cnCorrAuthSet)); // [检索]中文通讯作者，分词
//
//                    corePaperUnite.setZkysubject(OftenUtils.strToList(OftenUtils.getStrField(entry, "zky_subject"))); // [展示]中科院大区名称，此为List格式
//                    corePaperUnite.setPubtype(OftenUtils.getStrField(entry, "pub_type")); // [展示]出版物类型，图书、期刊等，此为List格式
//                    corePaperUnite.setPubmedsubject(OftenUtils.strToList(OftenUtils.getStrField(entry, "pubmed_subject"))); // [展示]pubmed期刊学科，此为List格式
//
//                    corePaperUnite.setPg(strChangeList(OftenUtils.getStrField(entry, "page").toLowerCase())); // [检索]论文的起止页码 10-20，此为List格式，检索可以可以输出多个页码信息
//                    corePaperUnite.setVl(strChangeList(OftenUtils.getStrField(entry, "volume").toLowerCase())); // [检索]论文的发表卷，此为List格式，因为存在多个卷的情况
//                    corePaperUnite.setIssue(strChangeList(OftenUtils.getStrField(entry, "issue").toLowerCase())); // [检索]论文的发表期，此为List格式
//                    corePaperUnite.setSubject(strChangeList(OftenUtils.getStrField(entry, "subject"))); // [展示]论文所在的学科，不同数据库，学科划分不一样，此为List格式
//
//                    corePaperUnite.setCountry(PublicUtils.strToListToLowerCase(OftenUtils.getStrField(entry, "country_list"))); // [展示]规范的及拆分出来的国家信息，此为List格式
//                    corePaperUnite.setZkyxiaolei(OftenUtils.strToList(OftenUtils.getStrField(entry, "zky_xiao_lei"))); // [展示]中科院小区名称，此为List格式
//                    corePaperUnite.setBeidadalei(OftenUtils.getStrField(entry, "beida_dalei")); // [展示]北大核心大类名称，此为String格式
//                    corePaperUnite.setDataname(OftenUtils.getStrField(entry, "data_name")); // [展示]数据库的名称，分别为NCBI、SCIE、CSCD、CNKI、weiPu、wanFan
//
//                    List<PublicEntity.EnAuthAndCnAuth> en_cn_au = JSONObject.parseArray(OftenUtils.getStrField(entry, "en_cn_au"), PublicEntity.EnAuthAndCnAuth.class);
//                    Set<String> enAuthSet = new HashSet<>();
//                    Set<String> cnAuthSet = new HashSet<>();
//                    for (PublicEntity.EnAuthAndCnAuth authInfo : en_cn_au) {
//                        String enAuth = authInfo.getEnAuth().toLowerCase().trim();
//                        if (enAuth.length() > 3) {
//                            enAuthSet.add(enAuth);
//                        }
//                        String cnAuth = authInfo.getCnAuth();
//                        if (cnAuth.length() > 1) {
//                            cnAuthSet.add(cnAuth);
//                        }
//                    }
//                    corePaperUnite.setEnau(new ArrayList<>(enAuthSet)); // [检索]此作者是规范的中、英文作者字段中提取出来的英文作者部分，分词
//                    corePaperUnite.setCnau(new ArrayList<>(cnAuthSet)); // [检索]此作者是规范的中、英文作者字段中提取出来的中文作者部分，分词
//
//                    // 部门信息为Map结构，在此给转为List。比如：{"beijing university":["金属工程系","高等研究中心"]} -> ["beijing university==金属工程系","beijing university==高等研究中心"]
//                    Set<String> cnDeptSet = new HashSet<>();
//                    Set<String> enDeptSet = new HashSet<>();
//                    Map<String, List<String>> deptListMap = OftenUtils.strToMapList(OftenUtils.getStrField(entry, "dept_list"));
//                    for (Map.Entry<String, List<String>> map : deptListMap.entrySet()) {
//                        List<String> value = map.getValue();
//                        String unit = map.getKey();
//                        for (String dept : value) {
//                            OftenUtils.addNameSet(unit + "==" + dept, cnDeptSet, enDeptSet);
//                            OftenUtils.addNameSet(dept, cnDeptSet, enDeptSet);
//                        }
//                    }
//                    corePaperUnite.setCndept(new ArrayList<>(cnDeptSet)); // [检索]规范的及拆分出来的部门信息，因规范后大多数为中文，故不再区分中、英文，以后可以把原始的加上，再区分中、英文，分词
//                    corePaperUnite.setEndept(new ArrayList<>(enDeptSet)); // [检索]规范的及拆分出来的部门信息，因规范后大多数为中文，故不再区分中、英文，以后可以把原始的加上，再区分中、英文，分词
//
//                    List<PublicEntity.TopLower> fundList = JSONObject.parseArray(OftenUtils.getStrField(entry, "fund_list"), PublicEntity.TopLower.class);
//                    Set<String> cnFundSet = new HashSet<>();
//                    Set<String> enFundSet = new HashSet<>();
//                    if (null != fundList && fundList.size() > 0) {
//                        for (PublicEntity.TopLower fund : fundList) {
//                            String name = fund.getTop().toLowerCase();
//                            OftenUtils.addNameSet(name, cnFundSet, enFundSet);
//                        }
//                    }
//                    corePaperUnite.setCnfund(new ArrayList<>(cnFundSet)); // [检索]规范的及拆分出来的基金信息，因规范后大多数为中文，故不再区分中、英文，以后可以把原始的加上，再区分中、英文，分词
//                    corePaperUnite.setEnfund(new ArrayList<>(enFundSet)); // [检索]规范的及拆分出来的基金信息，因规范后大多数为中文，故不再区分中、英文，以后可以把原始的加上，再区分中、英文，分词
//
//                    String dataUnique = OftenUtils.getStrField(entry, "data_unique");
//                    if (NumberUtil.isInteger(dataUnique)) {
//                        int pmid = Integer.parseInt(dataUnique);
//                        if (pmid > 0 && pmid < 40000000) {
//                            corePaperUnite.setPmid(dataUnique); // [检索]文献的唯一区别码，包含UT、PMID、论文url。此处仅加入数字类型的PMID号，其它不加入
//                        }
//                    }
//
//                    String doi = OftenUtils.getStrField(entry, "doi").toLowerCase().trim();
//                    if (doi.startsWith("10.") && doi.length() > 7) {
//                        if (doi.indexOf("; ") > 7) {
//                            doi = doi.substring(0, doi.indexOf("; "));
//                        }
//                        corePaperUnite.setDoi(doi); // [检索]文献doi号，以10.开头，部分文献没有
//                    }
//
//                    corePaperUnite.setMeshshow(OftenUtils.getStrField(entry, "mesh")); // [展示]仅NCBI数据库中存在，文献的mesh词，用于展示，不作检索使用
//
//                    corePaperUnite.setCnab(OftenUtils.getByteField(entry, "cn_ab")); // [检索]论文的中文摘要，原为longblob类型，需要转换，分词
//                    corePaperUnite.setEnkwshow(OftenUtils.getStrField(entry, "en_kw")); // [展示]论文的英文关键词，用于展示，不作检索使用
//                    corePaperUnite.setCnkwshow(OftenUtils.getStrField(entry, "cn_kw")); // [展示]论文的中文关键词，用于展示，不作检索使用
//                    corePaperUnite.setEnaushow(OftenUtils.getStrField(entry, "en_au")); // [展示]英文作者，用于展示，不作检索使用
//                    corePaperUnite.setCnaushow(OftenUtils.getStrField(entry, "cn_au")); // [展示]中文作者，用于展示，不作检索使用
//
//                    corePaperUnite.setCnkiurl(OftenUtils.getStrField(entry, "cnki_url")); // [展示]知网链接
//                    corePaperUnite.setWanfanurl(OftenUtils.getStrField(entry, "wanfan_url")); // [展示]万方链接
//                    corePaperUnite.setWeipuurl(OftenUtils.getStrField(entry, "weipu_url")); // [展示]维普链接
//                    corePaperUnite.setZhonghuaurl(OftenUtils.getStrField(entry, "zhong_hua_url")); // [展示]中华医学期刊论文链接
//
//                    corePaperUnite.setJour(OftenUtils.getStrField(entry, "jour")); // [展示]期刊信息，包含卷、期、页码等信息，用于展示，不作检索使用
//                    corePaperUnite.setPubdate(OftenUtils.getStrField(entry, "pub_date")); // [展示]论文的发表日期，用于展示，不作检索使用
//                    corePaperUnite.setLa(OftenUtils.getStrField(entry, "language").toLowerCase()); // [检索]语种
//                    corePaperUnite.setUrl(OftenUtils.getStrField(entry, "url")); // [展示]文献doi号对应的网址
//                    corePaperUnite.setDomain(OftenUtils.getStrField(entry, "domain")); // [展示]文献doi号对应的网址的主域名
//                    corePaperUnite.setSubdomain(OftenUtils.getStrField(entry, "sub_domain")); // [展示]文献doi号对应的网址的子域名
//                    corePaperUnite.setBeidaxiaolei(OftenUtils.getStrField(entry, "beida_xiao_lei")); // [展示]北大核心小类名称来源字段：`beida_xiao_lei`
//
//                    String enAb = OftenUtils.getByteField(entry, "en_ab");
//                    corePaperUnite.setEnabshow(enAb); // [原始]论文的英文摘要，用于展示，不作检索使用。此为原始的数据，区分大小写的，原为longblob类型，需要转换。
//                    corePaperUnite.setEnab(enAb.toLowerCase()); // [检索]论文的英文摘要，原为longblob类型，需要转换，分词。来源字段：`en_ab`
//
//                    String articleType = OftenUtils.getStrField(entry, "article_type");
//                    corePaperUnite.setArticletypeshow(articleType); // [原始]文献类型，综述、指南等。此为原始的数据，区分大小写的
//                    corePaperUnite.setDt(strChangeList(articleType.toLowerCase())); // [检索]文献类型，综述、指南等，此为List格式。
//
//                    List<String> unitList = PublicUtils.strToListToLowerCase(OftenUtils.getStrField(entry, "unit_list"));
//                    String enUnit = OftenUtils.getByteField(entry, "en_unit");
//                    String cnUnit = OftenUtils.getStrField(entry, "cn_unit");
//                    Set<String> enUnitSet = new HashSet<>();
//                    Set<String> cnUnitSet = new HashSet<>();
//                    for (String unit : unitList) {
//                        OftenUtils.addNameSet(unit, cnUnitSet, enUnitSet);
//                    }
//                    corePaperUnite.setEnunit(new ArrayList<>(enUnitSet)); // [检索]英文单位信息，此部分包含规范的`unit_list`，分词。
//                    corePaperUnite.setCnunit(new ArrayList<>(cnUnitSet)); // [检索]中文单位信息，此部分包含规范的`unit_list`，分词。
//                    enUnitSet.add(enUnit.toLowerCase());
//                    cnUnitSet.add(cnUnit);
//                    corePaperUnite.setUnitlist(unitList); // [展示]规范的及拆分出来的单位信息，此为List格式，主要用于左侧的分面展示
//                    corePaperUnite.setEnad(new ArrayList<>(enUnitSet)); // [检索]英文作者及单位信息，此部分包含原始的`en_unit`和规范的`unit_list`两部分，分词。
//                    corePaperUnite.setCnad(new ArrayList<>(cnUnitSet)); // [检索]中文作者及单位信息，此部分包含原始的`cn_unit`和规范的`unit_list`两部分，分词。
//                    corePaperUnite.setEnunitshow(enUnit); // [原始]英文作者及单位信息，用于展示，不作检索使用。此为原始的数据，区分大小写的，原为longblob类型，需要转换。
//                    corePaperUnite.setCnunitshow(cnUnit); // [原始]中文作者及单位信息，用于展示，不作检索使用。此为原始的数据，区分大小写的。
//                    list.add(corePaperUnite);
//
//                }
//                try {
//                    upDataTable.saveBatch(list);
//                } catch (Exception e) {
//                    while (true) {
//                        try {
//                            upDataTable.saveBatch(list);
//                            break;
//                        } catch (Exception exception) {
//                        }
//                    }
//                } finally {
////            System.out.println("正在执行第 " + i + "/" + finalCount + " 次,用时 " + (System.currentTimeMillis() - startTime) + " 毫秒");
//                }
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        });
//    }
//
//
//// end
//}
